home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gamers Delight 2
/
Gamers Delight 2.iso
/
Aminet
/
game
/
role
/
SRunMatGen.lha
/
Matrix.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-06-26
|
55KB
|
1,349 lines
/*********************************/
/* MatrixGenerator für ShadowRun */
/* written by Thomas Reinhardt */
/* */
/* Spezielle Funktionen Matrix */
/*********************************/
#include <time.h>
#include <math.h>
#include <string.h>
#include <exec/interrupts.h>
#include <exec/libraries.h>
#include <exec/lists.h>
#include <exec/memory.h>
#include <exec/nodes.h>
#include <exec/ports.h>
#include <exec/types.h>
#include <intuition/intuition.h>
#include <libraries/dos.h>
#include <libraries/dosextens.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/graphics.h>
#include <proto/intuition.h>
#include <proto/gadtools.h>
#include <proto/diskfont.h>
#include <stdio.h>
#include <stdlib.h>
#include "MatrixGen.h"
#include "all.h"
extern LONG SaveNamePointer;
extern struct IntuitionBase *IntuitionBase;
extern struct GfxBase *GfxBase;
extern struct Library *DosBase;
extern struct NewScreen MyNewScreen;
extern struct Screen *MyScreen;
extern struct BitMapHeader BMHD;
extern struct ColorRegister Colors[16];
extern struct CommodoreAmiga CAMG;
extern LONG Len,xi,yi,b;
extern ULONG ChunkLen;
extern char *WohinDamit;
extern char GfxName[255];
extern char StatusName[255];
extern char StandardName[255];
extern char DatenFeld[255];
extern BOOL success,AllDone;
extern int i;
extern char inread[5];
extern int cBitmaps,AnzahlKnoten,AusgangsKnoten,AnzahlWichtigeDaten,Stufenwert;
extern int MaxSAN,AusgangsWichtigeDaten;
extern UBYTE xPos,yPos,MaxFarben,Language,OutputType;
extern struct MatrixKomponenten Matrix[12*12];
extern struct MatrixGenType MatrixDatas[1];
extern BOOL CPUInSystem,Beenden,RandomDSValue,CheckLevelCode;
extern BOOL Zufallsstufen,KeineDatenspeicher,StatusFile,PrefsFile,BlaueKnoten;
extern BOOL Schatten,SaveDatenfeld,InstallNoIC,AlwaysICInfo,AlwaysICDS;
extern UBYTE AnzahlCPU,AnzahlSPU,AnzahlDS,AnzahlSAN,AnzahlSN,AnzahlIOP,AnzahlBlueNodes;
void MatrixGenerierung(){
ULONG MGxPos,MGyPos;
MGxPos=0;
MGyPos=5;
MaxSAN--;
CreateSAN(MGxPos,MGyPos);
Matrix[MGxPos+MGyPos*12].O=TRUE;
MGxPos+=1;
Matrix[MGxPos+MGyPos*12].W=TRUE;
CreateSPU(MGxPos,MGyPos);
}
void MatrixKorrektur(){
ULONG x,y,zwsp;
int StartX,EndX,SizeX;
int StartY,EndY,SizeY;
BOOL BackStatus;
zwsp=0;
for(y=0;y<12;y++){
for(x=0;x<12;x++){
if(Matrix[x+12*y].Type==2) zwsp++;
}
}
if(AnzahlKnoten>0){
while(AnzahlKnoten>0){
x=Zufallszahl(1,4);
switch(x){
case 4:{StartX=1;
EndX=11;
SizeX=1;
StartY=1;
EndY=11;
SizeY=1;
break;
}
case 3:{StartX=1;
EndX=11;
SizeX=1;
StartY=10;
EndY=0;
SizeY=-1;
break;
}
case 2:{StartX=10;
EndX=0;
SizeX=-1;
StartY=1;
EndY=11;
SizeY=1;
break;
}
case 1:{StartX=10;
EndX=0;
SizeX=-1;
StartY=10;
EndY=0;
SizeY=-1;
break;
}
}
for(y=StartY;(SizeY<0?y>EndY:y<EndY);y=y+SizeY){
for(x=StartX;(SizeX<0?x>EndX:x<EndX);x=x+SizeX){
if(Matrix[x+12*y].Type==0){
BackStatus=FALSE;
if((BackStatus==FALSE)&&(Editbar(x,y-1)!=0)){
if((BackStatus=InsertNewNode(x,y,x,y-1))==TRUE){
Matrix[x+12*(y-1)].S=TRUE;
Matrix[x+12*y].N=TRUE;
}
}
if((BackStatus==FALSE)&&(Editbar(x+1,y-1)!=0)){
if((BackStatus=InsertNewNode(x,y,x+1,y-1))==TRUE){
Matrix[x+1+12*(y-1)].SW=TRUE;
Matrix[x+12*y].NO=TRUE;
}
}
if((BackStatus==FALSE)&&(Editbar(x+1,y)!=0)){
if((BackStatus=InsertNewNode(x,y,x+1,y))==TRUE){
Matrix[x+1+12*y].W=TRUE;
Matrix[x+12*y].O=TRUE;
}
}
if((BackStatus==FALSE)&&(Editbar(x+1,y+1)!=0)){
if((BackStatus=InsertNewNode(x,y,x+1,y+1))==TRUE){
Matrix[x+1+12*(y+1)].NW=TRUE;
Matrix[x+12*y].SO=TRUE;
}
}
if((BackStatus==FALSE)&&(Editbar(x,y+1)!=0)){
if((BackStatus=InsertNewNode(x,y,x,y+1))==TRUE){
Matrix[x+12*(y+1)].N=TRUE;
Matrix[x+12*y].S=TRUE;
}
}
if((BackStatus==FALSE)&&(Editbar(x-1,y+1)!=0)){
if((BackStatus=InsertNewNode(x,y,x-1,y+1))==TRUE){
Matrix[x-1+12*(y+1)].NO=TRUE;
Matrix[x+12*y].SW=TRUE;
}
}
if((BackStatus==FALSE)&&(Editbar(x-1,y)!=0)){
if((BackStatus=InsertNewNode(x,y,x-1,y))==TRUE){
Matrix[x-1+12*y].O=TRUE;
Matrix[x+12*y].W=TRUE;
}
}
if((BackStatus==FALSE)&&(Editbar(x-1,y-1)!=0)){
if((BackStatus=InsertNewNode(x,y,x-1,y-1))==TRUE){
Matrix[x-1+12*(y-1)].SO=TRUE;
Matrix[x+12*y].NW=TRUE;
}
}
}
}
}
}
}
while((AnzahlKnoten<1)&&(CPUInSystem==FALSE)){
x=Zufallszahl(1,4);
switch(x){
case 4:{StartX=0;
EndX=12;
SizeX=1;
StartY=0;
EndY=12;
SizeY=1;
break;
}
case 3:{StartX=0;
EndX=12;
SizeX=1;
StartY=11;
EndY=-1;
SizeY=-1;
break;
}
case 2:{StartX=11;
EndX=-1;
SizeX=-1;
StartY=0;
EndY=12;
SizeY=1;
break;
}
case 1:{StartX=11;
EndX=-1;
SizeX=-1;
StartY=11;
EndY=-1;
SizeY=-1;
break;
}
}
for(y=StartY;(SizeY<0?y>EndY:y<EndY);y=y+SizeY){
for(x=StartX;(SizeX<0?x>EndX:x<EndX);x=x+SizeX){
if((x!=1)&&(y!=5)){
if((Matrix[x+12*y].Type==2)&&(CPUInSystem==FALSE)){
Matrix[x+12*y].Type=1;
CPUInSystem=TRUE;
}
}
}
}
if(CPUInSystem==FALSE){
Matrix[1+12*5].Type=1;
CPUInSystem=TRUE;
}
}
while((zwsp==1)&&(CPUInSystem==FALSE)&&(AnzahlKnoten>0)){
x=Zufallszahl(1,4);
switch(x){
case 4:{StartX=0;
EndX=12;
SizeX=1;
StartY=0;
EndY=12;
SizeY=1;
break;
}
case 3:{StartX=0;
EndX=12;
SizeX=1;
StartY=11;
EndY=-1;
SizeY=-1;
break;
}
case 2:{StartX=11;
EndX=-1;
SizeX=-1;
StartY=0;
EndY=12;
SizeY=1;
break;
}
case 1:{StartX=11;
EndX=-1;
SizeX=-1;
StartY=11;
EndY=-1;
SizeY=-1;
break;
}
}
for(y=StartY;(SizeY<0?y>EndY:y<EndY);y=y+SizeY){
for(x=StartX;(SizeX<0?x>EndX:x<EndX);x=x+SizeX){
if((Matrix[x+12*y].Type==2)&&(CPUInSystem==FALSE)){
Matrix[x+12*y].Type=1;
CPUInSystem=TRUE;
}
}
}
}
CountNodes();
BackStatus=FALSE;
while((AnzahlIOP==0)&&(BackStatus==FALSE)){
x=Zufallszahl(1,4);
switch(x){
case 4:{StartX=0;
EndX=12;
SizeX=1;
StartY=0;
EndY=12;
SizeY=1;
break;
}
case 3:{StartX=0;
EndX=12;
SizeX=1;
StartY=11;
EndY=-1;
SizeY=-1;
break;
}
case 2:{StartX=11;
EndX=-1;
SizeX=-1;
StartY=0;
EndY=12;
SizeY=1;
break;
}
case 1:{StartX=11;
EndX=-1;
SizeX=-1;
StartY=11;
EndY=-1;
SizeY=-1;
break;
}
}
for(y=StartY;(SizeY<0?y>EndY:y<EndY);y=y+SizeY){
for(x=StartX;(SizeX<0?x>EndX:x<EndX);x=x+SizeX){
if((Matrix[x+12*y].Type==5)&&(BackStatus==FALSE)){
Matrix[x+12*y].Type=3;
BackStatus=TRUE;
CountNodes();
}
if((Matrix[x+12*y].Type==6)&&(BackStatus==FALSE)){
Matrix[x+12*y].Type=3;
BackStatus=TRUE;
CountNodes();
}
}
}
}
for(y=1;y<11;y++){
for(x=1;x<11;x++){
if((Matrix[x+12*y].N==TRUE)&&((Matrix[x+12*(y-1)].N==FALSE)&&(Matrix[x+12*(y-1)].Type==0))) Matrix[x+12*y].N=FALSE;
if((Matrix[x+12*y].NO==TRUE)&&((Matrix[x+1+12*(y-1)].NO==FALSE)&&(Matrix[x+1+12*(y-1)].Type==0))) Matrix[x+12*y].NO=FALSE;
if((Matrix[x+12*y].O==TRUE)&&((Matrix[x+1+12*y].O==FALSE)&&(Matrix[x+1+12*y].Type==0))) Matrix[x+12*y].O=FALSE;
if((Matrix[x+12*y].SO==TRUE)&&((Matrix[x+1+12*(y+1)].SO==FALSE)&&(Matrix[x+1+12*(y+1)].Type==0))) Matrix[x+12*y].SO=FALSE;
if((Matrix[x+12*y].S==TRUE)&&((Matrix[x+12*(y+1)].S==FALSE)&&(Matrix[x+12*(y+1)].Type==0))) Matrix[x+12*y].S=FALSE;
if((Matrix[x+12*y].SW==TRUE)&&((Matrix[x-1+12*(y+1)].SW==FALSE)&&(Matrix[x-1+12*(y+1)].Type==0))) Matrix[x+12*y].SW=FALSE;
if((Matrix[x+12*y].W==TRUE)&&((Matrix[x-1+12*y].W==FALSE)&&(Matrix[x-1+12*y].Type==0))) Matrix[x+12*y].W=FALSE;
if((Matrix[x+12*y].NW==TRUE)&&((Matrix[x-1+12*(y-1)].NW==FALSE)&&(Matrix[x-1+12*(y-1)].Type==0))) Matrix[x+12*y].NW=FALSE;
}
}
}
BOOL InsertNewNode(ULONG xw1,ULONG yw1,ULONG xw2,ULONG yw2){
BOOL status;
ULONG zwsp;
status=FALSE;
if(AnzahlKnoten>0){
switch(Matrix[xw2+12*yw2].Type){
case 1:{zwsp=Zufallszahl(1,6);
if(((zwsp==1)||(zwsp==2)||(zwsp==3))&&(Zufallszahl(1,3)==1)){
Matrix[xw1+12*yw1].Type=2;
AnzahlKnotenSenken();
status=TRUE;
}
if(((zwsp==4)||(zwsp==5))&&(Zufallszahl(1,3)==1)){
Matrix[xw1+12*yw1].Type=4;
AnzahlKnotenSenken();
status=TRUE;
}
if((zwsp==5)&&(Zufallszahl(1,3)==1)){
switch(Zufallszahl(1,3)){
case 1:{Matrix[xw1+12*yw1].Type=3;
AnzahlKnotenSenken();
status=TRUE;
break;
}
case 2:{if(MaxSAN>0){
Matrix[xw1+12*yw1].Type=5;
AnzahlKnotenSenken();
MaxSAN--;
status=TRUE;
}
break;
}
case 3:{Matrix[xw1+12*yw1].Type=6;
AnzahlKnotenSenken();
status=TRUE;
break;
}
}
}
break;
}
case 2:{zwsp=Zufallszahl(1,6);
if(((zwsp==1)||(zwsp==2))&&(Zufallszahl(1,3)==1)){
Matrix[xw1+12*yw1].Type=2;
AnzahlKnotenSenken();
status=TRUE;
}
if(((zwsp==3)||(zwsp==4))&&(Zufallszahl(1,3)==1)){
Matrix[xw1+12*yw1].Type=4;
AnzahlKnotenSenken();
status=TRUE;
}
if(((zwsp==5)||(zwsp==6))&&(Zufallszahl(1,3)==1)){
switch(Zufallszahl(1,3)){
case 1:{Matrix[xw1+12*yw1].Type=3;
AnzahlKnotenSenken();
status=TRUE;
break;
}
case 2:{if(MaxSAN>0){
Matrix[xw1+12*yw1].Type=5;
AnzahlKnotenSenken();
MaxSAN--;
status=TRUE;
}
break;
}
case 3:{Matrix[xw1+12*yw1].Type=6;
AnzahlKnotenSenken();
status=TRUE;
break;
}
}
}
break;
}
case 4:{zwsp=Zufallszahl(1,6);
if(((zwsp==1)||(zwsp==2)||(zwsp==3)||(zwsp==4))&&(Zufallszahl(1,3)==1)){
Matrix[xw1+12*yw1].Type=2;
AnzahlKnotenSenken();
status=TRUE;
}
if(((zwsp==5)||(zwsp==6))&&(Zufallszahl(1,3)==1)){
Matrix[xw1+12*yw1].Type=4;
AnzahlKnotenSenken();
status=TRUE;
}
break;
}
}
}
return status;
}
ULONG Editbar(ULONG xW,ULONG yW){
ULONG Rueckwert;
Rueckwert=0;
if(Matrix[xW+yW*12].Type==1) Rueckwert=1;
if(Matrix[xW+yW*12].Type==2) Rueckwert=2;
if(Matrix[xW+yW*12].Type==4) Rueckwert=4;
return Rueckwert;
}
void MatrixEditKanten(){
LONG count;
ULONG xWert,yWert;
count=(ULONG)((Zufallszahl(10,20)*log((double)AusgangsKnoten))/10);
while(count>0){
for(yWert=1;yWert<11;yWert++){
for(xWert=1;xWert<11;xWert++){
if(Editbar(xWert,yWert)!=0){
if(Editbar(xWert,yWert-1)){
if(Zufallszahl(1,6)==1){
Matrix[xWert+yWert*12].N=TRUE;
Matrix[xWert+(yWert-1)*12].S=TRUE;
}
}
if(Editbar(xWert+1,yWert-1)){
if(Zufallszahl(1,6)==1){
Matrix[xWert+yWert*12].NO=TRUE;
Matrix[xWert+1+(yWert-1)*12].SW=TRUE;
}
}
if(Editbar(xWert+1,yWert)){
if(Zufallszahl(1,6)==1){
Matrix[xWert+yWert*12].O=TRUE;
Matrix[xWert+1+yWert*12].W=TRUE;
}
}
if(Editbar(xWert+1,yWert+1)){
if(Zufallszahl(1,6)==1){
Matrix[xWert+yWert*12].SO=TRUE;
Matrix[xWert+1+(yWert+1)*12].NW=TRUE;
}
}
if(Editbar(xWert,yWert+1)){
if(Zufallszahl(1,6)==1){
Matrix[xWert+yWert*12].S=TRUE;
Matrix[xWert+(yWert+1)*12].N=TRUE;
}
}
if(Editbar(xWert-1,yWert+1)){
if(Zufallszahl(1,6)==1){
Matrix[xWert+yWert*12].SW=TRUE;
Matrix[xWert-1+(yWert+1)*12].NO=TRUE;
}
}
if(Editbar(xWert-1,yWert)){
if(Zufallszahl(1,6)==1){
Matrix[xWert+yWert*12].W=TRUE;
Matrix[xWert-1+yWert*12].O=TRUE;
}
}
if(Editbar(xWert-1,yWert-1)){
if(Zufallszahl(1,6)==1){
Matrix[xWert+yWert*12].NW=TRUE;
Matrix[xWert-1+(yWert-1)*12].SO=TRUE;
}
}
}
count--;
}
}
}
count=(ULONG)((Zufallszahl(10,20)*log((double)AusgangsKnoten))/10);
while(count>0){
for(yWert=2;yWert<10;yWert++){
for(xWert=2;xWert<10;xWert++){
if(Editbar(xWert,yWert)!=0){
if(Editbar(xWert,yWert-2)!=0){
if(Matrix[xWert+12*(yWert-1)].Type==0){
if(Zufallszahl(1,4)==1){
Matrix[xWert+yWert*12].N=TRUE;
Matrix[xWert+(yWert-1)*12].S=TRUE;
Matrix[xWert+(yWert-1)*12].N=TRUE;
Matrix[xWert+(yWert-2)*12].S=TRUE;
}
}
}
if(Editbar(xWert+2,yWert-2)!=0){
if(Matrix[xWert+1+12*(yWert-1)].Type==0){
if(Zufallszahl(1,4)==1){
Matrix[xWert+yWert*12].NO=TRUE;
Matrix[xWert+1+(yWert-1)*12].SW=TRUE;
Matrix[xWert+1+(yWert-1)*12].NO=TRUE;
Matrix[xWert+2+(yWert-2)*12].SW=TRUE;
}
}
}
if(Editbar(xWert+2,yWert)!=0){
if(Matrix[xWert+1+12*yWert].Type==0){
if(Zufallszahl(1,4)==1){
Matrix[xWert+yWert*12].O=TRUE;
Matrix[xWert+1+yWert*12].W=TRUE;
Matrix[xWert+1+yWert*12].O=TRUE;
Matrix[xWert+2+yWert*12].W=TRUE;
}
}
}
if(Editbar(xWert+2,yWert+2)!=0){
if(Matrix[xWert+1+12*(yWert+1)].Type==0){
if(Zufallszahl(1,4)==1){
Matrix[xWert+yWert*12].SO=TRUE;
Matrix[xWert+1+(yWert+1)*12].NW=TRUE;
Matrix[xWert+1+(yWert+1)*12].SO=TRUE;
Matrix[xWert+2+(yWert+2)*12].NW=TRUE;
}
}
}
if(Editbar(xWert,yWert+2)!=0){
if(Matrix[xWert+12*(yWert+1)].Type==0){
if(Zufallszahl(1,4)==1){
Matrix[xWert+yWert*12].S=TRUE;
Matrix[xWert+(yWert+1)*12].N=TRUE;
Matrix[xWert+(yWert+1)*12].S=TRUE;
Matrix[xWert+(yWert+2)*12].N=TRUE;
}
}
}
if(Editbar(xWert-2,yWert+2)!=0){
if(Matrix[xWert-1+12*(yWert+1)].Type==0){
if(Zufallszahl(1,4)==1){
Matrix[xWert+yWert*12].SW=TRUE;
Matrix[xWert-1+(yWert+1)*12].NO=TRUE;
Matrix[xWert-1+(yWert+1)*12].SW=TRUE;
Matrix[xWert-2+(yWert+2)*12].NO=TRUE;
}
}
}
if(Editbar(xWert-2,yWert)!=0){
if(Matrix[xWert-1+12*yWert].Type==0){
if(Zufallszahl(1,4)==1){
Matrix[xWert+yWert*12].W=TRUE;
Matrix[xWert-1+yWert*12].O=TRUE;
Matrix[xWert-1+yWert*12].W=TRUE;
Matrix[xWert-2+yWert*12].O=TRUE;
}
}
}
if(Editbar(xWert-2,yWert-2)!=0){
if(Matrix[xWert-1+12*(yWert-1)].Type==0){
if(Zufallszahl(1,4)==1){
Matrix[xWert+yWert*12].NW=TRUE;
Matrix[xWert-1+(yWert-1)*12].SO=TRUE;
Matrix[xWert-1+(yWert-1)*12].NW=TRUE;
Matrix[xWert-2+(yWert-2)*12].SO=TRUE;
}
}
}
}
}
}
count--;
}
}
void MatrixStufe(){
ULONG xx,yy;
if(Zufallsstufen==TRUE){
for(yy=0;yy<12;yy++){
for(xx=0;xx<12;xx++){
if(Matrix[xx+12*yy].Type>0){
Matrix[xx+12*yy].Secure=BerechneStufe();
while((Matrix[xx+12*yy].Type==1)&&(Matrix[xx+12*yy].Secure==2)) Matrix[xx+12*yy].Secure=BerechneStufe();
if(Matrix[xx+12*yy].Secure==2) while(Matrix[xx+12*yy].Stufe<2) Matrix[xx+12*yy].Stufe=Berechne1W6();
if(Matrix[xx+12*yy].Secure==3) Matrix[xx+12*yy].Stufe=Berechne1W6()+1;
if(Matrix[xx+12*yy].Secure==4) Matrix[xx+12*yy].Stufe=Berechne1W6()+2;
if(Matrix[xx+12*yy].Secure==5) Matrix[xx+12*yy].Stufe=BerechneStufenwert()+BerechneStufenwert();
if(Matrix[xx+12*yy].Secure==6) Matrix[xx+12*yy].Stufe=BerechneStufenwert()+BerechneStufenwert()+2;
if(Matrix[xx+12*yy].Secure==7) Matrix[xx+12*yy].Stufe=BerechneStufenwert()+BerechneStufenwert()+4;
}
}
}
}
else{
for(yy=0;yy<12;yy++){
for(xx=0;xx<12;xx++){
if(Matrix[xx+12*yy].Type>0){
Matrix[xx+12*yy].Stufe=BerechneStufenwert();
if((Zufallszahl(1,6)==1)&&(Matrix[xx+12*yy].Secure>2)){
Matrix[xx+12*yy].Secure--;
if((Matrix[xx+12*yy].Type==1)&&(Matrix[xx+12*yy].Secure==2)){
Matrix[xx+12*yy].Secure++;
}
}
if((Zufallszahl(1,6)==6)&&(Matrix[xx+12*yy].Secure<5)){
Matrix[xx+12*yy].Secure++;
if((Matrix[xx+12*yy].Type==1)&&(Matrix[xx+12*yy].Secure>MaxFarben)){
Matrix[xx+12*yy].Secure=MaxFarben;
}
}
}
}
}
}
}
void MatrixDatenspeicher(){
ULONG xx,yy,ergebnis,GrundWert,GrundSize;
if(KeineDatenspeicher==FALSE){
for(yy=0;yy<12;yy++){
for(xx=0;xx<12;xx++){
if((Matrix[xx+12*yy].Type==4)&&(Matrix[xx+12*yy].Secure>2)){
GrundWert=0;
GrundSize=0;
switch(Matrix[xx+12*yy].Secure){
case 3:
ergebnis=Berechne2W6();
switch(ergebnis){
case 2:
GrundWert=0;
GrundSize=0;
break;
case 3:
case 4:
GrundWert=50;
GrundSize=Berechne2W6();
break;
case 5:
case 6:
case 7:
GrundWert=1000;
GrundSize=Berechne2W6();
break;
case 8:
case 9:
case 10:
GrundWert=5000;
GrundSize=Berechne2W6();
break;
case 11:
GrundWert=10000;
GrundSize=Berechne2W6();
break;
case 12:
GrundWert=0;
GrundSize=0;
break;
}
break;
case 4:
ergebnis=Berechne2W6();
switch(ergebnis){
case 2:
GrundWert=0;
GrundSize=0;
break;
case 3:
case 4:
GrundWert=1000;
GrundSize=Berechne2W6();
break;
case 5:
case 6:
case 7:
GrundWert=2500;
GrundSize=Berechne2W6();
break;
case 8:
case 9:
case 10:
GrundWert=10000;
GrundSize=Berechne2W6();
break;
case 11:
GrundWert=50000;
GrundSize=Berechne2W6();
break;
case 12:
GrundWert=0;
GrundSize=0;
break;
}
break;
case 5:
ergebnis=Berechne2W6();
switch(ergebnis){
case 2:
GrundWert=0;
GrundSize=0;
break;
case 3:
case 4:
GrundWert=2500;
GrundSize=Berechne2W6();
break;
case 5:
case 6:
case 7:
GrundWert=5000;
GrundSize=Berechne2W6();
break;
case 8:
case 9:
case 10:
GrundWert=50000;
GrundSize=Berechne2W6();
break;
case 11:
GrundWert=100000;
GrundSize=Berechne2W6();
break;
case 12:
GrundWert=0;
GrundSize=0;
break;
}
break;
case 6:
ergebnis=Berechne2W6();
switch(ergebnis){
case 2:
GrundWert=0;
GrundSize=0;
break;
case 3:
case 4:
GrundWert=5000;
GrundSize=Berechne2W6();
break;
case 5:
case 6:
case 7:
GrundWert=25000;
GrundSize=Berechne2W6();
break;
case 8:
case 9:
case 10:
GrundWert=100000;
GrundSize=Berechne2W6();
break;
case 11:
GrundWert=200000;
GrundSize=Berechne2W6();
break;
case 12:
GrundWert=0;
GrundSize=0;
break;
}
break;
case 7:
ergebnis=Berechne2W6();
switch(ergebnis){
case 2:
GrundWert=0;
GrundSize=0;
break;
case 3:
case 4:
GrundWert=25000;
GrundSize=Berechne2W6();
break;
case 5:
case 6:
case 7:
GrundWert=50000;
GrundSize=Berechne2W6();
break;
case 8:
case 9:
case 10:
GrundWert=200000;
GrundSize=Berechne2W6();
break;
case 11:
GrundWert=500000;
GrundSize=Berechne2W6();
break;
case 12:
GrundWert=0;
GrundSize=0;
break;
}
break;
}
if(RandomDSValue==TRUE) Matrix[xx+12*yy].Datenwert=((GrundWert/10)*Zufallszahl(900,1100))/100;
else Matrix[xx+12*yy].Datenwert=GrundWert;
if((RandomDSValue==TRUE)&&(GrundWert>0)){
Matrix[xx+12*yy].Datensize=GrundSize*10+Zufallszahl(0,10)-5;
if(Matrix[xx+12*yy].Datensize<0) Matrix[xx+12*yy].Datensize=1;
}
else Matrix[xx+12*yy].Datensize=GrundSize*10;
}
}
}
}
CountNodes();
CountBlueDS();
while((AnzahlWichtigeDaten>0)&&(AnzahlWichtigeDaten>(AusgangsWichtigeDaten-(AnzahlDS-AnzahlBlueNodes)))){
for(yy=0;yy<12;yy++){
for(xx=0;xx<12;xx++){
if((Matrix[xx+12*yy].Type==4)&&(AnzahlWichtigeDaten>0)&&(Matrix[xx+12*yy].WichtigeDaten==FALSE)){
if((Zufallszahl(1,15)>10)&&(Matrix[xx+12*yy].Secure>2)){
Matrix[xx+12*yy].WichtigeDaten=TRUE;
AnzahlWichtigeDaten--;
}
}
}
}
}
}
void MatrixNummerierung(){
ULONG x1,y1,Korrekt;
BOOL MakePrint;
char AusText[10];
for(y1=0;y1<12;y1++){
for(x1=0;x1<12;x1++){
MakePrint=FALSE;
switch(Matrix[x1+y1*12].Type){
case 2:{sprintf(AusText,"%i",Matrix[x1+12*y1].Nummer);
MakePrint=TRUE;
Korrekt=0;
if(Matrix[x1+12*y1].ICType>0) Korrekt=2;
break;
}
case 3:{sprintf(AusText,"%i",Matrix[x1+12*y1].Nummer);
MakePrint=TRUE;
Korrekt=4;
break;
}
case 4:{sprintf(AusText,"%i",Matrix[x1+12*y1].Nummer);
MakePrint=TRUE;
Korrekt=0;
if(Matrix[x1+12*y1].ICType>0) Korrekt=2;
break;
}
case 5:{sprintf(AusText,"%i",Matrix[x1+12*y1].Nummer);
MakePrint=TRUE;
Korrekt=0;
if(Matrix[x1+12*y1].ICType>0) Korrekt=0;
break;
}
case 6:{sprintf(AusText,"%i",Matrix[x1+12*y1].Nummer);
MakePrint=TRUE;
Korrekt=0;
if(Matrix[x1+12*y1].ICType>0) Korrekt=2;
break;
}
}
if(MakePrint==TRUE) AusgabeText(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset+Korrekt,1,AusText);
}
}
}
void MatrixDarstellung(){
ULONG x1,y1;
for(y1=0;y1<12;y1++){
for(x1=0;x1<12;x1++){
switch(Matrix[x1+y1*12].Type){
case 1:{DrawCPU(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset,Matrix[x1+y1*12].Secure);
break;
}
case 2:{DrawSPU(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset,Matrix[x1+y1*12].Secure);
break;
}
case 3:{DrawIOP(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset,Matrix[x1+y1*12].Secure);
break;
}
case 4:{DrawDS(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset,Matrix[x1+y1*12].Secure);
break;
}
case 5:{DrawSAN(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset,Matrix[x1+y1*12].Secure);
break;
}
case 6:{DrawSN(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset,Matrix[x1+y1*12].Secure);
break;
}
}
}
}
for(y1=0;y1<12;y1++){
for(x1=0;x1<12;x1++){
if((Matrix[x1+y1*12].N==TRUE)&&(y1>0)){
if(((Matrix[x1+y1*12].Type==4)||(Matrix[x1+y1*12].Type==6)||(Matrix[x1+y1*12].Type==3)||(Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&((Matrix[x1+(y1-1)*12].Type==2)||(Matrix[x1+(y1-1)*12].Type==4)||(Matrix[x1+(y1-1)*12].Type==3)||(Matrix[x1+(y1-1)*12].Type==6)||(Matrix[x1+(y1-1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset-11,x1*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset+11);
}
if((Matrix[x1+y1*12].Type==5)&&((Matrix[x1+(y1-1)*12].Type==2)||(Matrix[x1+(y1-1)*12].Type==4)||(Matrix[x1+(y1-1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset-6,x1*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset+11);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==4)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+(y1-1)*12].Type==5)){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset-11,x1*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset+6);
}
/*Leer*/
if(((Matrix[x1+y1*12].Type==4)||(Matrix[x1+y1*12].Type==6)||(Matrix[x1+y1*12].Type==3)||(Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset-11,x1*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==5)&&(Matrix[x1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset-6,x1*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==4)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset-11,x1*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
}
if((Matrix[x1+y1*12].NO==TRUE)&&(x1<11)&&(y1>0)){
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&((Matrix[x1+1+(y1-1)*12].Type==2)||(Matrix[x1+1+(y1-1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset-9,(x1+1)*xVerschiebung+xOffset-12,(y1-1)*yVerschiebung+yOffset+9);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1+1+(y1-1)*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset-9,(x1+1)*xVerschiebung+xOffset-11,(y1-1)*yVerschiebung+yOffset+9);
}
if((Matrix[x1+y1*12].Type==3)&&((Matrix[x1+1+(y1-1)*12].Type==1)||(Matrix[x1+1+(y1-1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset+6,y1*yVerschiebung+yOffset-5,(x1+1)*xVerschiebung+xOffset-12,(y1-1)*yVerschiebung+yOffset+9);
}
if((Matrix[x1+y1*12].Type==4)&&((Matrix[x1+1+(y1-1)*12].Type==1)||(Matrix[x1+1+(y1-1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset-9,(x1+1)*xVerschiebung+xOffset-12,(y1-1)*yVerschiebung+yOffset+9);
}
if((Matrix[x1+y1*12].Type==5)&&((Matrix[x1+1+(y1-1)*12].Type==2)||(Matrix[x1+1+(y1-1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset+10,y1*yVerschiebung+yOffset-6,(x1+1)*xVerschiebung+xOffset-12,(y1-1)*yVerschiebung+yOffset+9);
}
if((Matrix[x1+y1*12].Type==6)&&((Matrix[x1+1+(y1-1)*12].Type==1)||(Matrix[x1+1+(y1-1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset+9,y1*yVerschiebung+yOffset-7,(x1+1)*xVerschiebung+xOffset-12,(y1-1)*yVerschiebung+yOffset+9);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1-1)*12].Type==3)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset-9,(x1+1)*xVerschiebung+xOffset-13,(y1-1)*yVerschiebung+yOffset+11);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1-1)*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset-9,(x1+1)*xVerschiebung+xOffset-11,(y1-1)*yVerschiebung+yOffset+9);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1-1)*12].Type==5)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset-9,(x1+1)*xVerschiebung+xOffset-10,(y1-1)*yVerschiebung+yOffset+6);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1-1)*12].Type==6)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset-9,(x1+1)*xVerschiebung+xOffset-9,(y1-1)*yVerschiebung+yOffset+7);
}
/*Leer*/
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset-9,(x1+1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==3)&&(Matrix[x1+1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+6,y1*yVerschiebung+yOffset-5,(x1+1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1+1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset-9,(x1+1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==5)&&(Matrix[x1+1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+10,y1*yVerschiebung+yOffset-6,(x1+1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==6)&&(Matrix[x1+1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+9,y1*yVerschiebung+yOffset-7,(x1+1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset-9,(x1+1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
}
if((Matrix[x1+y1*12].O==TRUE)&&(x1<11)){
if(((Matrix[x1+y1*12].Type==5)||(Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&((Matrix[x1+1+y1*12].Type==2)||(Matrix[x1+1+y1*12].Type==5)||(Matrix[x1+1+y1*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset+16,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset-16,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1+1+y1*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==4)&&((Matrix[x1+1+y1*12].Type==1)||(Matrix[x1+1+y1*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset-16,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==3)&&((Matrix[x1+1+y1*12].Type==1)||(Matrix[x1+1+y1*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset+8,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset-16,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==6)&&((Matrix[x1+1+y1*12].Type==1)||(Matrix[x1+1+y1*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset-16,y1*yVerschiebung+yOffset);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+y1*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset+16,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+y1*12].Type==3)){
DrawLinie(x1*xVerschiebung+xOffset+16,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset-8,y1*yVerschiebung+yOffset);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+y1*12].Type==6)){
DrawLinie(x1*xVerschiebung+xOffset+16,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset);
}
/*Leer*/
if(((Matrix[x1+y1*12].Type==5)||(Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+y1*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+16,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1+1+y1*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==3)&&(Matrix[x1+1+y1*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+8,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==6)&&(Matrix[x1+1+y1*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset,y1*yVerschiebung+yOffset);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+y1*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+16,y1*yVerschiebung+yOffset,(x1+1)*xVerschiebung+xOffset,y1*yVerschiebung+yOffset);
}
}
if((Matrix[x1+y1*12].SO==TRUE)&&(y1<11)&&(x1<11)){
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&((Matrix[x1+1+(y1+1)*12].Type==2)||(Matrix[x1+1+(y1+1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset+9,(x1+1)*xVerschiebung+xOffset-12,(y1+1)*yVerschiebung+yOffset-9);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1+1+(y1+1)*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset+9,(x1+1)*xVerschiebung+xOffset-11,(y1+1)*yVerschiebung+yOffset-9);
}
if((Matrix[x1+y1*12].Type==3)&&((Matrix[x1+1+(y1+1)*12].Type==1)||(Matrix[x1+1+(y1+1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset+13,y1*yVerschiebung+yOffset+11,(x1+1)*xVerschiebung+xOffset-12,(y1+1)*yVerschiebung+yOffset-9);
}
if((Matrix[x1+y1*12].Type==4)&&((Matrix[x1+1+(y1+1)*12].Type==1)||(Matrix[x1+1+(y1+1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset+9,(x1+1)*xVerschiebung+xOffset-12,(y1+1)*yVerschiebung+yOffset-9);
}
if((Matrix[x1+y1*12].Type==5)&&((Matrix[x1+1+(y1+1)*12].Type==2)||(Matrix[x1+1+(y1+1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset+10,y1*yVerschiebung+yOffset+6,(x1+1)*xVerschiebung+xOffset-12,(y1+1)*yVerschiebung+yOffset-9);
}
if((Matrix[x1+y1*12].Type==6)&&((Matrix[x1+1+(y1+1)*12].Type==1)||(Matrix[x1+1+(y1+1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset+9,y1*yVerschiebung+yOffset+7,(x1+1)*xVerschiebung+xOffset-12,(y1+1)*yVerschiebung+yOffset-9);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1+1)*12].Type==3)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset+9,(x1+1)*xVerschiebung+xOffset-6,(y1+1)*yVerschiebung+yOffset-4);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1+1)*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset+9,(x1+1)*xVerschiebung+xOffset-11,(y1+1)*yVerschiebung+yOffset-9);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1+1)*12].Type==5)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset+9,(x1+1)*xVerschiebung+xOffset-10,(y1+1)*yVerschiebung+yOffset-6);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1+1)*12].Type==6)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset+9,(x1+1)*xVerschiebung+xOffset-9,(y1+1)*yVerschiebung+yOffset-7);
}
/*Leer*/
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+12,y1*yVerschiebung+yOffset+9,(x1+1)*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1+1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset+9,(x1+1)*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==3)&&(Matrix[x1+1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+13,y1*yVerschiebung+yOffset+11,(x1+1)*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==5)&&(Matrix[x1+1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+10,y1*yVerschiebung+yOffset+6,(x1+1)*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==6)&&(Matrix[x1+1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset+9,y1*yVerschiebung+yOffset+7,(x1+1)*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
}
if((Matrix[x1+y1*12].S==TRUE)&&(y1<11)){
if(((Matrix[x1+y1*12].Type==4)||(Matrix[x1+y1*12].Type==6)||(Matrix[x1+y1*12].Type==3)||(Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&((Matrix[x1+(y1+1)*12].Type==2)||(Matrix[x1+(y1+1)*12].Type==4)||(Matrix[x1+(y1+1)*12].Type==1)||(Matrix[x1+(y1+1)*12].Type==6)||(Matrix[x1+(y1+1)*12].Type==3))){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset+11,x1*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset-11);
}
if((Matrix[x1+y1*12].Type==5)&&((Matrix[x1+(y1-1)*12].Type==2)||(Matrix[x1+(y1-1)*12].Type==4)||(Matrix[x1+(y1+1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset+6,x1*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset-11);
}
if(((Matrix[x1+y1*12].Type==4)||(Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+(y1+1)*12].Type==5)){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset+11,x1*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset-6);
}
/*Leer*/
if(((Matrix[x1+y1*12].Type==4)||(Matrix[x1+y1*12].Type==6)||(Matrix[x1+y1*12].Type==3)||(Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset+11,x1*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==5)&&(Matrix[x1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset,y1*yVerschiebung+yOffset+6,x1*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
}
if((Matrix[x1+y1*12].SW==TRUE)&&(x1>0)&&(y1<11)){
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&((Matrix[x1-1+(y1+1)*12].Type==2)||(Matrix[x1-1+(y1+1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset+9,(x1-1)*xVerschiebung+xOffset+12,(y1+1)*yVerschiebung+yOffset-9);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1-1+(y1+1)*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset+9,(x1-1)*xVerschiebung+xOffset+11,(y1+1)*yVerschiebung+yOffset-9);
}
if((Matrix[x1+y1*12].Type==3)&&((Matrix[x1-1+(y1+1)*12].Type==1)||(Matrix[x1-1+(y1+1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset-13,y1*yVerschiebung+yOffset+11,(x1-1)*xVerschiebung+xOffset+12,(y1+1)*yVerschiebung+yOffset-9);
}
if((Matrix[x1+y1*12].Type==4)&&((Matrix[x1-1+(y1+1)*12].Type==1)||(Matrix[x1-1+(y1+1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset+9,(x1-1)*xVerschiebung+xOffset+12,(y1+1)*yVerschiebung+yOffset-9);
}
if((Matrix[x1+y1*12].Type==5)&&((Matrix[x1-1+(y1+1)*12].Type==2)||(Matrix[x1-1+(y1+1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset-10,y1*yVerschiebung+yOffset+6,(x1-1)*xVerschiebung+xOffset+12,(y1+1)*yVerschiebung+yOffset-9);
}
if((Matrix[x1+y1*12].Type==6)&&((Matrix[x1-1+(y1+1)*12].Type==1)||(Matrix[x1-1+(y1+1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset-9,y1*yVerschiebung+yOffset+7,(x1-1)*xVerschiebung+xOffset+12,(y1+1)*yVerschiebung+yOffset-9);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+(y1+1)*12].Type==3)){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset+9,(x1-1)*xVerschiebung+xOffset+6,(y1+1)*yVerschiebung+yOffset-5);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+(y1+1)*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset+9,(x1-1)*xVerschiebung+xOffset+11,(y1+1)*yVerschiebung+yOffset-9);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+(y1+1)*12].Type==5)){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset+9,(x1-1)*xVerschiebung+xOffset+10,(y1+1)*yVerschiebung+yOffset-6);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+(y1+1)*12].Type==6)){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset+9,(x1-1)*xVerschiebung+xOffset+9,(y1+1)*yVerschiebung+yOffset-7);
}
/*Leer*/
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset+9,(x1-1)*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==3)&&(Matrix[x1-1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-13,y1*yVerschiebung+yOffset+11,(x1-1)*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1-1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset+9,(x1-1)*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==5)&&(Matrix[x1-1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-10,y1*yVerschiebung+yOffset+6,(x1-1)*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==6)&&(Matrix[x1-1+(y1+1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-9,y1*yVerschiebung+yOffset+7,(x1-1)*xVerschiebung+xOffset,(y1+1)*yVerschiebung+yOffset);
}
}
if((Matrix[x1+y1*12].W==TRUE)&&(x1>0)){
if(((Matrix[x1+y1*12].Type==5)||(Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&((Matrix[x1-1+y1*12].Type==2)||(Matrix[x1-1+y1*12].Type==5)||(Matrix[x1-1+y1*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset-16,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset+16,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1-1+y1*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==4)&&((Matrix[x1-1+y1*12].Type==1)||(Matrix[x1-1+y1*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset+16,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==3)&&((Matrix[x1-1+y1*12].Type==1)||(Matrix[x1-1+y1*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset-8,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset+15,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==6)&&((Matrix[x1-1+y1*12].Type==1)||(Matrix[x1-1+y1*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset+16,y1*yVerschiebung+yOffset);
}
if(((Matrix[x1+y1*12].Type==1)||(Matrix[x1+y1*12].Type==2))&&(Matrix[x1-1+y1*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset-16,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset);
}
if(((Matrix[x1+y1*12].Type==1)||(Matrix[x1+y1*12].Type==2))&&(Matrix[x1-1+y1*12].Type==3)){
DrawLinie(x1*xVerschiebung+xOffset-16,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset+8,y1*yVerschiebung+yOffset);
}
if(((Matrix[x1+y1*12].Type==1)||(Matrix[x1+y1*12].Type==2))&&(Matrix[x1-1+y1*12].Type==6)){
DrawLinie(x1*xVerschiebung+xOffset-16,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset+11,y1*yVerschiebung+yOffset);
}
/*Leer*/
if(((Matrix[x1+y1*12].Type==5)||(Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+y1*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-16,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1-1+y1*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==3)&&(Matrix[x1-1+y1*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-8,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset,y1*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==6)&&(Matrix[x1-1+y1*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset,(x1-1)*xVerschiebung+xOffset,y1*yVerschiebung+yOffset);
}
}
if((Matrix[x1+y1*12].NW==TRUE)&&(x1>0)&&(y1>0)){
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&((Matrix[x1-1+(y1-1)*12].Type==2)||(Matrix[x1-1+(y1-1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset-9,(x1-1)*xVerschiebung+xOffset+12,(y1-1)*yVerschiebung+yOffset+9);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1-1+(y1-1)*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset-9,(x1-1)*xVerschiebung+xOffset+11,(y1-1)*yVerschiebung+yOffset+9);
}
if((Matrix[x1+y1*12].Type==3)&&((Matrix[x1-1+(y1-1)*12].Type==1)||(Matrix[x1-1+(y1-1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset-6,y1*yVerschiebung+yOffset-4,(x1-1)*xVerschiebung+xOffset+12,(y1-1)*yVerschiebung+yOffset+9);
}
if((Matrix[x1+y1*12].Type==4)&&((Matrix[x1-1+(y1-1)*12].Type==1)||(Matrix[x1-1+(y1-1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset-9,(x1-1)*xVerschiebung+xOffset+12,(y1-1)*yVerschiebung+yOffset+9);
}
if((Matrix[x1+y1*12].Type==5)&&((Matrix[x1-1+(y1-1)*12].Type==2)||(Matrix[x1-1+(y1-1)*12].Type==1))){
DrawLinie(x1*xVerschiebung+xOffset-10,y1*yVerschiebung+yOffset-6,(x1-1)*xVerschiebung+xOffset+12,(y1-1)*yVerschiebung+yOffset+9);
}
if((Matrix[x1+y1*12].Type==6)&&((Matrix[x1-1+(y1-1)*12].Type==1)||(Matrix[x1-1+(y1-1)*12].Type==2))){
DrawLinie(x1*xVerschiebung+xOffset-9,y1*yVerschiebung+yOffset-7,(x1-1)*xVerschiebung+xOffset+12,(y1-1)*yVerschiebung+yOffset+9);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+(y1-1)*12].Type==3)){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset-9,(x1-1)*xVerschiebung+xOffset+13,(y1-1)*yVerschiebung+yOffset+11);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+(y1-1)*12].Type==4)){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset-9,(x1-1)*xVerschiebung+xOffset+11,(y1-1)*yVerschiebung+yOffset+9);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+(y1-1)*12].Type==5)){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset-9,(x1-1)*xVerschiebung+xOffset+10,(y1-1)*yVerschiebung+yOffset+6);
}
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+(y1-1)*12].Type==6)){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset-9,(x1-1)*xVerschiebung+xOffset+9,(y1-1)*yVerschiebung+yOffset+7);
}
/*Leer*/
if(((Matrix[x1+y1*12].Type==2)||(Matrix[x1+y1*12].Type==1))&&(Matrix[x1-1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-12,y1*yVerschiebung+yOffset-9,(x1-1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==3)&&(Matrix[x1-1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-6,y1*yVerschiebung+yOffset-4,(x1-1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==4)&&(Matrix[x1-1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-11,y1*yVerschiebung+yOffset-9,(x1-1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==5)&&(Matrix[x1-1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-10,y1*yVerschiebung+yOffset-6,(x1-1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
if((Matrix[x1+y1*12].Type==6)&&(Matrix[x1-1+(y1-1)*12].Type==0)){
DrawLinie(x1*xVerschiebung+xOffset-9,y1*yVerschiebung+yOffset-7,(x1-1)*xVerschiebung+xOffset,(y1-1)*yVerschiebung+yOffset);
}
}
}
}
for(y1=0;y1<12;y1++){
for(x1=0;x1<12;x1++){
if(Matrix[x1+12*y1].ICType>0){
if(Matrix[x1+12*y1].Type==1) DrawIC(x1*xVerschiebung+xOffset+15,y1*yVerschiebung+yOffset+3);
if(Matrix[x1+12*y1].Type==2) DrawIC(x1*xVerschiebung+xOffset+15,y1*yVerschiebung+yOffset-2);
if(Matrix[x1+12*y1].Type==3) DrawIC(x1*xVerschiebung+xOffset+15,y1*yVerschiebung+yOffset);
if(Matrix[x1+12*y1].Type==4) DrawIC(x1*xVerschiebung+xOffset+15,y1*yVerschiebung+yOffset-2);
if(Matrix[x1+12*y1].Type==5) DrawIC(x1*xVerschiebung+xOffset+7,y1*yVerschiebung+yOffset+3);
if(Matrix[x1+12*y1].Type==6) DrawIC(x1*xVerschiebung+xOffset+15,y1*yVerschiebung+yOffset-2);
}
}
}
}
void MatrixInstallIC(){
ULONG xx,yy,TestWert;
BOOL ICInstallen;
if(InstallNoIC==FALSE){
for(yy=0;yy<12;yy++){
for(xx=0;xx<12;xx++){
if(Matrix[xx+12*yy].Type>0){
ICInstallen=FALSE;
TestWert=Zufallszahl(1,6);
if((Matrix[xx+12*yy].Secure==3)&&((TestWert==1)||((AlwaysICDS==TRUE)&&(Matrix[xx+12*yy].Type==4)))) ICInstallen=TRUE;
if((Matrix[xx+12*yy].Secure==4)&&((TestWert>=1)&&(TestWert<=2))||((AlwaysICDS==TRUE)&&(Matrix[xx+12*yy].Type==4))) ICInstallen=TRUE;
if((Matrix[xx+12*yy].Secure==5)&&((TestWert>=1)&&(TestWert<=3))||((AlwaysICDS==TRUE)&&(Matrix[xx+12*yy].Type==4))) ICInstallen=TRUE;
if((Matrix[xx+12*yy].Secure==6)&&((TestWert>=1)&&(TestWert<=4))||((AlwaysICDS==TRUE)&&(Matrix[xx+12*yy].Type==4))) ICInstallen=TRUE;
if((Matrix[xx+12*yy].Secure==7)&&((TestWert>=1)&&(TestWert<=5))||((AlwaysICDS==TRUE)&&(Matrix[xx+12*yy].Type==4))) ICInstallen=TRUE;
if(ICInstallen==TRUE){
ICInstallen=FALSE;
TestWert=Zufallszahl(1,6)+Zufallszahl(1,6);
if((Matrix[xx+12*yy].Secure==3)&&(TestWert>=2)&&(TestWert<=8)) Matrix[xx+12*yy].ICType=1; /* weiss */
if((Matrix[xx+12*yy].Secure==3)&&(TestWert>=9)&&(TestWert<=11)) Matrix[xx+12*yy].ICType=2; /* grau */
if((Matrix[xx+12*yy].Secure==3)&&(TestWert>=12)&&(TestWert<=12)) Matrix[xx+12*yy].ICType=3; /* schwarz */
if((Matrix[xx+12*yy].Secure==4)&&(TestWert>=2)&&(TestWert<=7)) Matrix[xx+12*yy].ICType=1; /* weiss */
if((Matrix[xx+12*yy].Secure==4)&&(TestWert>=8)&&(TestWert<=10)) Matrix[xx+12*yy].ICType=2; /* grau */
if((Matrix[xx+12*yy].Secure==4)&&(TestWert>=11)&&(TestWert<=12)) Matrix[xx+12*yy].ICType=3; /* schwarz */
if((Matrix[xx+12*yy].Secure==5)&&(TestWert>=2)&&(TestWert<=6)) Matrix[xx+12*yy].ICType=1; /* weiss */
if((Matrix[xx+12*yy].Secure==5)&&(TestWert>=6)&&(TestWert<=10)) Matrix[xx+12*yy].ICType=2; /* grau */
if((Matrix[xx+12*yy].Secure==5)&&(TestWert>=11)&&(TestWert<=12)) Matrix[xx+12*yy].ICType=3; /* schwarz */
if((Matrix[xx+12*yy].Secure==6)&&(TestWert>=2)&&(TestWert<=5)) Matrix[xx+12*yy].ICType=1; /* weiss */
if((Matrix[xx+12*yy].Secure==6)&&(TestWert>=5)&&(TestWert<=9)) Matrix[xx+12*yy].ICType=2; /* grau */
if((Matrix[xx+12*yy].Secure==6)&&(TestWert>=10)&&(TestWert<=12)) Matrix[xx+12*yy].ICType=3; /* schwarz */
if((Matrix[xx+12*yy].Secure==7)&&(TestWert>=2)&&(TestWert<=4)) Matrix[xx+12*yy].ICType=1; /* weiss */
if((Matrix[xx+12*yy].Secure==7)&&(TestWert>=4)&&(TestWert<=9)) Matrix[xx+12*yy].ICType=2; /* grau */
if((Matrix[xx+12*yy].Secure==7)&&(TestWert>=10)&&(TestWert<=12)) Matrix[xx+12*yy].ICType=3; /* schwarz */
TestWert=Zufallszahl(1,6)+Zufallszahl(1,6);
if((Matrix[xx+12*yy].ICType==1)&&(TestWert>=2)&&(TestWert<=2)) Matrix[xx+12*yy].ICArt=1; /* Falle */
if((Matrix[xx+12*yy].ICType==1)&&(TestWert>=3)&&(TestWert<=7)) Matrix[xx+12*yy].ICArt=2; /* Zugang */
if((Matrix[xx+12*yy].ICType==1)&&(TestWert>=8)&&(TestWert<=11)) Matrix[xx+12*yy].ICArt=3; /* BarriereIC/WirbelIC */
if((Matrix[xx+12*yy].ICType==1)&&(TestWert>=12)&&(TestWert<=12)) Matrix[xx+12*yy].ICArt=4; /* Falle */
if((Matrix[xx+12*yy].ICType==2)&&(TestWert>=2)&&(TestWert<=4)) Matrix[xx+12*yy].ICArt=1; /* Blaster */
if((Matrix[xx+12*yy].ICType==2)&&(TestWert>=5)&&(TestWert<=6)) Matrix[xx+12*yy].ICArt=2; /* Aufspüren */
if((Matrix[xx+12*yy].ICType==2)&&(TestWert>=7)&&(TestWert<=8)) Matrix[xx+12*yy].ICArt=3; /* Killer */
if((Matrix[xx+12*yy].ICType==2)&&(TestWert>=9)&&(TestWert<=11)) Matrix[xx+12*yy].ICArt=4; /* Teerbaby */
if((Matrix[xx+12*yy].ICType==2)&&(TestWert>=12)&&(TestWert<=12)) Matrix[xx+12*yy].ICArt=5; /* Teergrube */
if((Matrix[xx+12*yy].ICType>0)&&(Matrix[xx+12*yy].Secure==2)) Matrix[xx+12*yy].ICStufe=Zufallszahl(2,6);
if((Matrix[xx+12*yy].ICType>0)&&(Matrix[xx+12*yy].Secure==3)) Matrix[xx+12*yy].ICStufe=Zufallszahl(2,6);
if((Matrix[xx+12*yy].ICType>0)&&(Matrix[xx+12*yy].Secure==4)) Matrix[xx+12*yy].ICStufe=Zufallszahl(1,6)+Zufallszahl(1,6);
if((Matrix[xx+12*yy].ICType>0)&&(Matrix[xx+12*yy].Secure==5)) Matrix[xx+12*yy].ICStufe=Zufallszahl(1,6)+Zufallszahl(1,6)+1;
if((Matrix[xx+12*yy].ICType>0)&&(Matrix[xx+12*yy].Secure==6)) Matrix[xx+12*yy].ICStufe=Zufallszahl(1,6)+Zufallszahl(1,6)+Zufallszahl(1,6);
if((Matrix[xx+12*yy].ICType>0)&&(Matrix[xx+12*yy].Secure==7)) Matrix[xx+12*yy].ICStufe=Zufallszahl(1,6)+Zufallszahl(1,6)+Zufallszahl(1,6)+3;
}
}
if((Matrix[xx+12*yy].Type==4)&&(Matrix[xx+12*yy].WichtigeDaten==TRUE)){
if(AlwaysICInfo==TRUE){
Matrix[xx+12*yy].WDICType=1;
Matrix[xx+12*yy].WDICArt=3;
if(Matrix[xx+12*yy].Secure==2) Matrix[xx+12*yy].WDICStufe=Zufallszahl(2,6);
if(Matrix[xx+12*yy].Secure==3) Matrix[xx+12*yy].WDICStufe=Zufallszahl(2,6);
if(Matrix[xx+12*yy].Secure==4) Matrix[xx+12*yy].WDICStufe=Zufallszahl(1,6)+Zufallszahl(1,6);
if(Matrix[xx+12*yy].Secure==5) Matrix[xx+12*yy].WDICStufe=Zufallszahl(1,6)+Zufallszahl(1,6)+1;
if(Matrix[xx+12*yy].Secure==6) Matrix[xx+12*yy].WDICStufe=Zufallszahl(1,6)+Zufallszahl(1,6)+Zufallszahl(1,6);
if(Matrix[xx+12*yy].Secure==7) Matrix[xx+12*yy].WDICStufe=Zufallszahl(1,6)+Zufallszahl(1,6)+Zufallszahl(1,6)+3;
}
else{
if(Zufallszahl(1,6)==1){
Matrix[xx+12*yy].WDICType=1;
Matrix[xx+12*yy].WDICArt=3;
if(Matrix[xx+12*yy].Secure==2) Matrix[xx+12*yy].WDICStufe=Zufallszahl(2,6);
if(Matrix[xx+12*yy].Secure==3) Matrix[xx+12*yy].WDICStufe=Zufallszahl(2,6);
if(Matrix[xx+12*yy].Secure==4) Matrix[xx+12*yy].WDICStufe=Zufallszahl(1,6)+Zufallszahl(1,6);
if(Matrix[xx+12*yy].Secure==5) Matrix[xx+12*yy].WDICStufe=Zufallszahl(1,6)+Zufallszahl(1,6)+1;
if(Matrix[xx+12*yy].Secure==6) Matrix[xx+12*yy].WDICStufe=Zufallszahl(1,6)+Zufallszahl(1,6)+Zufallszahl(1,6);
if(Matrix[xx+12*yy].Secure==7) Matrix[xx+12*yy].WDICStufe=Zufallszahl(1,6)+Zufallszahl(1,6)+Zufallszahl(1,6)+3;
}
}
}
}
}
}
}
void MatrixCheckLevelCode(){
int xx,yy;
int HighestSecure,HighestStufe;
if(CheckLevelCode==TRUE){
HighestSecure=0;
HighestStufe=0;
for(yy=0;yy<12;yy++){
for(xx=0;xx<12;xx++){
if(Matrix[xx+12*yy].Secure>HighestSecure) HighestSecure=Matrix[xx+12*yy].Secure;
if(Matrix[xx+12*yy].Stufe>HighestStufe) HighestStufe=Matrix[xx+12*yy].Stufe;
}
}
printf("Stufe : %i\n",HighestStufe);
printf("Secure: %i\n",HighestSecure);
for(yy=0;yy<12;yy++){
for(xx=0;xx<12;xx++){
if(Matrix[xx+12*yy].Secure<(HighestSecure-2)) Matrix[xx+12*yy].Secure=Zufallszahl((HighestSecure-2),HighestSecure);
if(Matrix[xx+12*yy].Stufe<(HighestStufe/2)) Matrix[xx+12*yy].Stufe=Zufallszahl((HighestStufe/2),HighestStufe);
}
}
}
}